<?php

namespace App\Enums;

use BenSampo\Enum\Enum;
use BenSampo\Enum\Contracts\LocalizedEnum;

final class ResponseEnum extends Enum implements LocalizedEnum
{
    // 001 ~ 099 表示系统状态；100 ~ 199 表示授权业务；200 ~ 299 表示用户业务

    /*-------------------------------------------------------------------------------------------*/
    // 100开头的表示 信息提示，这类状态表示临时的响应
    // 100 - 继续
    // 101 - 切换协议

    /*-------------------------------------------------------------------------------------------*/
    // 200表示服务器成功地接受了客户端请求
    public const HTTP_OK = 200;
    public const HTTP_FAIL = 2001;
    public const HTTP_ERROR = 2002;
    public const HTTP_ACTION_COUNT_ERROR = 2003;

    /*-------------------------------------------------------------------------------------------*/
    // 300开头的表示服务器重定向,指向的别的地方，客户端浏览器必须采取更多操作来实现请求
    // 302 - 对象已移动。
    // 304 - 未修改。
    // 307 - 临时重定向。
    /*-------------------------------------------------------------------------------------------*/
    // 400开头的表示客户端错误请求错误，请求不到数据，或者找不到等等
    // 400 - 错误的请求
    public const CLIENT_NOT_FOUND_HTTP_ERROR = 400;
    public const CLIENT_PARAMETER_ERROR = 4001;
    public const CLIENT_CREATED_ERROR = 4002;
    public const CLIENT_DELETED_ERROR = 4003;
    // 401 - 访问被拒绝
    public const CLIENT_HTTP_UNAUTHORIZED = 401;
    public const CLIENT_HTTP_UNAUTHORIZED_EXPIRED = 4012;
    public const CLIENT_HTTP_UNAUTHORIZED_BLACKLISTED = 4013;
    // 403 - 禁止访问
    // 404 - 没有找到文件或目录
    public const CLIENT_NOT_FOUND_ERROR = 404;
    // 405 - 用来访问本页面的 HTTP 谓词不被允许（方法不被允许）
    public const CLIENT_METHOD_HTTP_TYPE_ERROR = 405;
    // 406 - 客户端浏览器不接受所请求页面的 MIME 类型
    // 407 - 要求进行代理身份验证
    // 412 - 前提条件失败
    // 413 – 请求实体太大
    // 414 - 请求 URI 太长
    // 415 – 不支持的媒体类型
    public const CLIENT_UNAUTHORIZED_MEDIA_TYPE_ERROR = 415;
    // 416 – 所请求的范围无法满足
    // 417 – 执行失败
    // 423 – 锁定的错误
    public const CLIENT_AUTH_UNAUTHORIZED_ERROR = 419;
    public const CLIENT_PARAMETER_FORMAT_ERROR = 422;

    /*-------------------------------------------------------------------------------------------*/
    // 500开头的表示服务器错误，服务器因为代码，或者什么原因终止运行
    // 服务端操作错误码：500 ~ 599 开头，后拼接 3 位
    // 500 - 内部服务器错误
    public const SYSTEM_ERROR = 500;
    public const SYSTEM_UNAVAILABLE = 5001;
    public const SYSTEM_CACHE_CONFIG_ERROR = 5003;
    public const SYSTEM_CACHE_MISSED_ERROR = 5004;
    public const SYSTEM_CONFIG_ERROR = 5005;
    public const SYSTEM_QUERY_ERROR = 5006;

    //501 - 页眉值指定了未实现的配置
    //502 - Web 服务器用作网关或代理服务器时收到了无效响应
    //503 - 服务不可用。这个错误代码为 IIS 6.0 所专用
    //504 - 网关超时
    //505 - HTTP 版本不受支持
    /*-------------------------------------------------------------------------------------------*/

    public const DELETE_OPTION_ERROR = 6001;
    public const DELETE_NOT_EXIST_ERROR = 6002;
    public const RECOVER_OPTION_ERROR = 6003;
    public const USER_ADMIN_DELETE_ERROR = 6004;
    public const ATTACHMENT_THE_GROUP_ERROR = 6011;
    public const PERMISSION_EXISTS_DELETE_ERROR = 6012;
    public const ROLE_EXISTS_DELETE_ERROR = 6013;
    public const ROLE_EXISTS_PER_DELETE_ERROR = 6014;
    public const USER_EXISTS_DELETE_ERROR = 6015;
    public const USER_EXISTS_ROLE_DELETE_ERROR = 6016;
    public const USER_SERVICE_LOGIN_ERROR = 6031;
    public const BASIC_USER_ERROR = 6041;
    public const BASIC_USER_PASSWORD_ERROR = 6042;
    public const BASIC_USER_OLD_PASSWORD_ERROR = 6043;
    public const UPLOAD_FILE_ERROR = 6051;
    public const UPLOAD_NETWORK_FILE_ERROR = 6052;
    public const UPLOAD_NETWORK_FILE_IP_NOT_ERROR = 6053;
    public const UPLOAD_NETWORK_FILE_IS_NOT_ERROR = 6054;
    public const UPLOAD_NETWORK_FILE_FORMAT_ERROR = 6055;
    public const UPLOAD_FILE_FORMAT_ERROR = 6056;
    public const UPLOAD_FILE_MAXSIZE_ERROR = 6057;
}
